package com.laysonx.easy.invoke;

import com.alibaba.fastjson.JSONObject;


import java.io.*;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

public class Test {


    public String init(String init){

        System.out.println("###### Test init " + init);

        return "\"###### Test init \" + init";
    }

    public static void main(String[] args) throws InvocationTargetException, IllegalAccessException, NoSuchMethodException, ClassNotFoundException, InstantiationException, IOException {

//        Class<?> testClass = Class.forName("com.laysonx.easy.invoke.Test");
//        Object o = testClass.newInstance();
//
//        Method method1 = testClass.getMethod("init",String.class);
//        Object tEst = method1.invoke(o,"HAHAHA");
//
//        Method[] methods = testClass.getMethods();
//
//        for (Method method : methods) {
//
//
//            System.out.println(method.getName());
//            System.out.println(method.getParameterTypes());
//        }
//
//        System.out.println(JSONObject.toJSONString(tEst));

//        String map = "{key1=value2,key2=value2}";
//
//        Map<String,String> newMap = new HashMap<>();
//        newMap.put("key1","value1");
//        String result = JSONObject.toJSONString(newMap);
//
//        JSONObject jsonObject = JSONObject.parseObject(result);
//
//        ByteArrayOutputStream baos = new ByteArrayOutputStream();
//        InputStream is;
//        try (ObjectOutputStream oos = new ObjectOutputStream(baos)) {
//
//
//            oos.writeObject(jsonObject);
//
//            oos.flush();
//            oos.close();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//
//        is = new ByteArrayInputStream(baos.toByteArray());
//
//        Object value = JSONObject.parseObject(is, java.util.Map.class);

        JSONObject jsonObject = JSONObject.parseObject("-1");
        Integer integer = JSONObject.toJavaObject(jsonObject, Integer.class);
        System.out.println(integer);

//        System.out.println(value);

        // index 先检查登录信息 跳转至 查询页面 / to index(MV)
        // search 查询检查登录信息 并返回 ticket(用户ID 创建时间 编号【年+月+日+时+分+次数】) 、 resource(resource number) /search(MV)
        // 选择目标（number JWT）+ ticket 跳转至 invoke 页面 /prepare (MV)
        // invoke 检查 ticket 创建时间 编号（限制频率）、返回 result (REST)

        //TODO 查询 Resource 查询不限制次数 只检查token
        //TODO 声明项目前缀
        //TODO 登录校验
        //TODO 频率校验
        //TODO 使用白名单

        //TODO 前置处理器 1. 默认验证处理 2. ticket 处理
        //TODO 禁止调用名单
    }
}
